package co.com.corbeta.logica;

import java.util.Map;

import org.apache.log4j.Logger;

import co.com.corbeta.enumerados.NombresPropieades;
import co.com.corbeta.utilidades.PropiedadesUtilidad;

/**
 * Clase que se encarga de ralizar las operaciones que tienen que ver con
 * Conciliacion
 * 
 * @author Diego A. Galindo
 * @version 1.0 06/08/2014
 * @since 1.0 06/08/2014
 * */
public class ServicioConciliacion {
    // Logger del log4j
    private static Logger log = Logger.getLogger(ServicioConciliacion.class);

    /**
     * Metodo que se encarga de realizar la validacion de que lo que se
     * encuentra en geopos sea lo mismo que lo que se encuentra en
     * geoconciliacion
     * 
     * @param ruta
     *            String que contiene la ruta en donde se encuentra el archivo
     *            de propieades
     * @return boolean true si se pudo realizar la validacion de lo contrario
     *         retorna false
     * */
    public boolean validarRegistrosGeoConciliacion(String ruta) {
	log.info("Se esta cargadno el archivo de propieades " + ruta);
	Map<String, String> propieades = PropiedadesUtilidad
		.materializarPropieades(ruta);
	if (propieades == null) {
	    log.error("El archivo de propieades especificado no existe");
	    return false;
	} else if (this.validarPropiedadesBasicas(propieades)) {	    
	    return true;
	} else {
	    return false;
	}
    }

    /**
     * Metodo que se encarga de realiza la validacion de que todos las
     * propieades necesarias se ecnuentren registradas
     * 
     * @param propieades
     *            Mapa que contiene las propieades
     * @return boolean retorna true en caso de que todas las propieades basicas
     *         se encuentren de lo contrario retorn false
     * */
    private boolean validarPropiedadesBasicas(Map<String, String> mapaPropieades) {
	NombresPropieades[] propieades = NombresPropieades.values();
	boolean propieadesCompletas = true;
	for (int i = 0; propieades.length < i && propieadesCompletas; i++) {
	    if (!mapaPropieades.containsKey(propieades[i].getNombrePropiedad())) {
		propieadesCompletas = false;
		log.error("La propieadad '"
			+ propieades[i].getNombrePropiedad()
			+ "' no se encuetra registrada en el archivo de propieades");
		System.out
			.println("La propieadad '"
				+ propieades[i].getNombrePropiedad()
				+ "' debe estar registrada en el archivo de propieades");
	    }
	}
	return propieadesCompletas;
    }
}
